《Android进程生命周期全解析》在线课程
课程简介
也许你已学习Android应用开发多年,却从未意识到Android应用背后也存在着一整套进程的运作机制?你是否还下意识地认为,Activity的onCreate()函数就等于应用和进程的创建?当你开发高级应用,希望对应用的优先级、进程和任务等进行深度调优的时候,却不知道该如何下手?
本课程通过对以下进阶内容的深度覆盖:
四大组件与Android进程的创建过程
Android进程调度组的定义
Android进程的优先级计算方法及调度过程
OOM内存管理机制及Android进程的三种退出方法
穿过Android应用和四大组件的表象,深入理解Android应用背后那不为人知的进程运作机制,掌握进程与应用和四大组件的内在联系。
通过掌握Android进程的运作机制,可以使我们对Android四大组件的创建、生命周期的调度、组件间协作、Binder在Android运作中的重要作用等知识做到融会贯通,既知其然也知其所以然,在Android应用的深层次开发中更加得心应手。
课程共4节课,全长约4.5小时,课程已全部上线我,无需等候。
上课形式:
视频课程(可无限次数回看)
课后练习题(在自己的电脑上进行实际操作)
加入课程讨论答疑群。
老师简介
曾昭毅:武汉理工大学计算机应用技术硕士毕业
曾在群硕软件、深圳仙苗科技有限公司担任软件开发经理、软件研发总监等职,是在实战中成长起来的从单板嵌入式到大型企业级应用系统集成的全栈式工程师。
具有丰富的Arm体系Linux及Android系统移植经验,对基于I2C、SPI、USB、AC97、I2S、SDIO/EMMC、UART等总线的各种设备如LCD、触摸屏、3G/4G模块、Wifi、GPS、摄像头、HDMI、CODEC等驱动移植有深厚的掌握。
Android系统进程的诞生
Android系统中进程的组成
内核进程
系统进程
应用进程
进程基本创建方式
fork
exec
java进程
1号进程init
init.rc驱动的系统启动过程
系统属性服务
进程监听服务
init.rc文件解析
init的启动流程
init的主要作用
Native进程
servicemanager, mediaserver, vold, etc.
servicemanager/Binder机制简述
Java进程
提供服务:ActivityManagerService, PowerManagerService, etc.
Java进程的受精卵——Zygote的启动流程
SystemServer
应用进程的创建
进程与四大组件关系
Android进程管理核心组件的地位和作用
ServiceManager
ActivityManagerService
ActivityThread
ApplicationThread
启动Activity触发的进程创建过程
ActivityStackSupervisor
ActivityStack
TaskRecord
ActivityRecord
拓扑关系
案例观察
在Activity管理中的作用
Activity辅助结构
Activity进程创建流程
神奇的执行机制:throw MethodAndArgsCaller
ApplicationThread与Looper/Handler的建立
为什么采用socket而不是Binder?
Fork的局限性分析
基于Zygote的Java进程创建
跨入ActivityThread
建立与AMS的脐带,心跳开始
Application的真正创建
启动Service触发的进程创建过程
startService的过程解析
bindService的过程解析
getServiceDispatcher
scheduleBindService
publishService
onServiceConnected最终获得Service接口
ActiveServices
ServiceRecord
Service辅助结构
Service进程创建流程
ContentProvider进程创建流程
本地代理ContentResolver
publishContentProviders
真实ContentProvider接口的获得
ContentResolver
ContentProviderRecord
CRUD over URI
主要作用简介
ContentProvider辅助结构
进程创建流程
BroadcastReceiver进程创建流程
BroadcastQueue
BroadcastHandler
静态注册
动态注册
注册方式
Broadcast的特点
BroadcastReceiver辅助结构
进程创建流程
PackagerManagerService的作用
BroadcastReceiver与其他三大组件不同的生命周期特点
Android进程调度机制
Linux调度策略基础
pre-EAS
EAS
SMP调度的缺点
HMP调度的缺点
基于CPU能效模型的调度机制
SCHED_NORMAL
SCHED_BATCH
优先级定义
Linux优先级定义
Android优先级定义
SCHED_FIFO
实时
SHCHED_RR
非实时
EAS
CGroup - Control Group
对进程调度的能效控制
boost
prefer_idle
控制进程可加载CPU
控制进程调度时间
/dev/cpuctl
/dev/cpuset
/dev/stune
Android中的CGroup定义分析
Android调度策略
Android调度策略的定义
Android调度策略与CGroup的映射关系
Android系统进程的调度策略
应用进程/线程优先级调整
应用进程调度组定义
应用进程优先级/调度组的计算流程
调度原则
执行调度
调度组/优先级的设置
Java线程优先级
调整时机
调整策略
进程退出机制
进程与四大组件生命周期区别
直接动机
根本原因
无主动退出
辅助结构及相关计算
Android ADJ定义
不同进程ADJ值的计算方法
Cached/Empty进程在ADJ cached slots中的存储算法
维护进程顺序的算法解析
LRU list
ADJ
三种进程强制退出方法
Cached进程的清理
Empty进程的清理
AMS的内存回收机制及意义
forceStopPackage处理流程
killBackgroundProcesses处理流程
userId的特别含义
ADJ值的作用
命令强制结束
ActivityManagerService主动清理
OOM的最后一刀
进程的重生
CGroup之Memory
lmkd与Mem CGroup的协作机制
ADJ vs MinFree
不同设备的ADJ与minFree的计算
OOM状态下对不同ADJ值进程的查杀过程
LowMemoryKiller
lmkd
留给AMS的烂摊子
苹果和电脑用户报名方法:
电脑浏览器访问yomocode.com(不支持手机访问),先点击网站右上角图标,微信扫码登录,然后在此链接报名:
http://www.yomocode.com/courses/13
手机用户可点击链接一键报名:
安卓手机用户可点击链接一键报名:
详情也可扫描如下二维码添加客服咨询: